# write by hasaki
# first edit on 2019-7-2
# last change on 2019-7-2
# 获取A股的行情数据
# 测试api:50957477eb7ba219f25c2ef90d09835b3ce2c2fdce49524609d06234
# 更新时间：交易日每天15点～16点之间
# tushare调取说明：每分钟内最多调取200次，超过5000积分无限制
import json
from datetime import datetime
from time import sleep

import tushare as ts

class AStock:
    def __init__(self):
        self.ts=None                     # 用来实例化tushare
        self.stock_list=[]               # 要查询的股票列表
        self.pro=None                    # tushare.pro
        self.api_key=''                  # tushare.pro需要的api key

    # --------------------------------------------------------------
    # 运行函数
    def start(self):
        self.ts=ts
        self.pro=ts.pro_api(self.api_key)

    # ---------------------------------------------------------------
    # 原tushare功能函数
    def getHistoryData(self,symbol,start_time,end_time):
        '''获取对应品种代号，开始时间与结束时间内的日K,
        示例：'600848',start='2015-01-05',end='2015-01-09
        返回值：
        date : 交易日期 (index)
        open : 开盘价
        high : 最高价
        close : 收盘价
        low : 最低价
        volume : 成交量
        amount : 成交金额
        '''
        data=self.ts.get_hist_data(symbol,start=start_time,end=end_time)
        return data

    # -----------------------------------------------------------------
    # tushare.pro功能函数
    def proHistoryData(self,symbol,start_time,end_time):
        ''' 获取指定区间的某股票日线历史
        ts_code='000001.sz'
        start_date='20180701', 
        end_date='20180718' '''
        data=self.pro.query('daily',ts_code=symbol,start_date=start_time,end_date=end_time)
        return data
    
    def proDaily(self,trade_date):
        '''获取一天的全部历史'''
        data=self.pro.daily(trade_date=trade_date)
        return data

    def proDailyBasic(self,symbol,start_time,end_time):
        '''每日指标，该接口调用需要300积分才能用
        symbol='' '''
        data=self.pro.daily_basic(ts_code='',trade_date='20180726', fields='ts_code,trade_date,turnover_rate,volume_ratio,pe,pb')
        return data
    
    